﻿namespace CSharPro._1106;

using System;
using System.Collections.Generic;

public class UserService : IUserService
{
    // 使用泛型集合保存用户信息
    private List<User> _userList = new List<User>();

    public bool Register(string username, string password)
    {
        // 使用foreach循环检查用户名是否已存在
        foreach (var user in _userList)
        {
            if (user.Username == username)
            {
                Console.WriteLine("用户名已存在，注册失败！");
                return false;
            }
        }
        
        // 添加新用户
        _userList.Add(new User(username, password));
        Console.WriteLine("注册成功！");
        return true;
    }

    public bool Login(string username, string password)
    {
        // 使用foreach循环验证用户名和密码
        foreach (var user in _userList)
        {
            if (user.Username == username && user.Password == password)
            {
                Console.WriteLine("登录成功！");
                return true;
            }
        }
        
        Console.WriteLine("用户名或密码错误，登录失败！");
        return false;
    }

    // 示例：删除用户（使用for循环）
    public bool DeleteUser(string username)
    {
        // 删除操作使用for循环，避免foreach迭代时修改集合引发异常
        for (int i = 0; i < _userList.Count; i++)
        {
            if (_userList[i].Username == username)
            {
                _userList.RemoveAt(i);
                Console.WriteLine("用户删除成功！");
                return true;
            }
        }
        
        Console.WriteLine("用户不存在，删除失败！");
        return false;
    }

    public void ShowMenu()
    {
        Console.WriteLine("===== 用户系统 =====");
        Console.WriteLine("1. 注册");
        Console.WriteLine("2. 登录");
        Console.WriteLine("3. 删除用户");  // 新增删除功能示例
        Console.WriteLine("4. 退出");
        Console.WriteLine("===================");
        Console.Write("请选择操作：");
    }

    public void Run()
    {
        while (true)
        {
            ShowMenu();
            string input = Console.ReadLine();
            if (!int.TryParse(input, out int choice))
            {
                Console.WriteLine("请输入有效的数字！");
                continue;
            }

            switch (choice)
            {
                case 1:
                    Console.Write("请输入用户名：");
                    string regUsername = Console.ReadLine();
                    Console.Write("请输入密码：");
                    string regPassword = Console.ReadLine();
                    Register(regUsername, regPassword);
                    break;
                case 2:
                    Console.Write("请输入用户名：");
                    string loginUsername = Console.ReadLine();
                    Console.Write("请输入密码：");
                    string loginPassword = Console.ReadLine();
                    Login(loginUsername, loginPassword);
                    break;
                case 3:
                    Console.Write("请输入要删除的用户名：");
                    string delUsername = Console.ReadLine();
                    DeleteUser(delUsername);
                    break;
                case 4:
                    Console.WriteLine("谢谢使用，再见！");
                    return;
                default:
                    Console.WriteLine("无效的选择，请重新输入！");
                    break;
            }

            Console.WriteLine("\n按任意键继续...");
            Console.ReadKey();
            Console.Clear();
        }
    }
}